Um erro ocorreu enquanto processava o modelo.
Java method "com.liferay.journal.model.impl.JournalArticleImpl.getContent()" threw an exception when invoked on com.liferay.journal.model.impl.JournalArticleImpl object "{\"mvccVersion\": 1, \"ctCollectionId\": 0, \"uuid\": \"3c3f0ffc-ce4c-5636-3909-ad86dda0ce48\", \"id\": 117064709, \"resourcePrimKey\": 201374, \"groupId\": 200052, \"companyId\": 20102, \"userId\": 42839451, \"userName\": \"Fabio Braga de Oliveira\", \"createDate\": \"Wed Jul 22 16:34:36 GMT 2020\", \"modifiedDate\": \"Mon Jan 05 12:42:37 GMT 2026\", \"externalReferenceCode\": \"1495387\", \"folderId\": 0, \"classNameId\": 0, \"classPK\": 0, \"treePath\": \"/\", \"articleId\": \"1495387\", \"version\": 8.2, \"urlTitle\": \"senac-araraquara\", \"DDMStructureKey\": \"134298\", \"DDMTemplateKey\": \"\", \"defaultLanguageId\": \"pt_BR\", \"layoutUuid\": \"\", \"displayDate\": \"Wed Jul 22 16:31:00 GMT 2020\", \"expirationDate\": null, \"reviewDate\": null, \"indexable\": true, \"smallImage\": false, \"smallImageId\": 0, \"smallImageURL\": \"\", \"lastPublishDate\": null, \"status\": 0, \"statusByUserId\": 101743407, \"statusByUserName\": \"Wyrlene Lilian Rebelo Henriques Povia\", \"statusDate\": \"Mon Jan 05 12:42:37 GMT 2026\"}"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign document = saxReaderUtil.read... [in template "20102#20129#40316" at line 196, column 21]
----
1<#--
2 Name: Unidade - Header
3 Type: Asset Publisher Widget Template
4 Path: ROOT/assets/unidade-header/widget-templates/unidade-header.ftl
5 -->
6<style>
7
8.ssp-header-unidade__content-info-body{
9 padding-top:30px;
10}
11
12.ssp-header-unidade__atendimento-container > p > a {
13 color:white!important;
14}
15
16.ssp-header-unidade__atendimento-container > p > a:hover {
17 color:white!important;
18 font-weight: normal!important;
19}
20
21.creditoFotoMob{
22
23 margin: 0 auto;
24 background: #FFF7D6;
25 font-family: 'Montserrat';
26 font-size: 14px;
27 line-height: 1.6em;
28 border-radius: 3px;
29 max-width: 240px;
30 height: auto;
31 color: #4F596F;
32 padding: 5px;
33 position: relative;
34 float: right;
35 top: 70%;
36 max-height: 40px;
37 font-weight: 500;
38 right: 15%;
39 flex-wrap: unset;
40}
41
42.creditoFotoMob:after{ /*Triangulo*/
43 content: "";
44 width: 0;
45 height: 0;
46 position: absolute;
47 border-left: 10px solid transparent;
48 border-right: 10px solid transparent;
49 /*Faz seta "apontar para baixo. Definir o valor como 'top' fará ela "apontar para cima" */
50 /*Aqui entra a cor da "aba" do balão */
51 border-bottom: 10px solid #FFF7D6;
52 top: -9px; /*localização. Experimente alterar para 'bottom'*/
53 left: 20%;
54}
55.tooltip-inner {
56 max-width: 230px;
57 padding: 0.75rem 0.75rem;
58 color: #4F596F;
59 text-align: center;
60 background-color: #FFF7D6;
61 border-radius: 0.3125rem;
62}
63.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {
64 top: 0;
65 border-width: 0.4rem 0.4rem 0;
66 border-top-color: #FFF7D6;
67}
68.ssp-header-title-bloco {
69 font-size: 20px;
70 font-weight: 600;
71}
72
73.ssp:not(.liferay-instance) .ssp-header-unidade__imagem-box-imagem{
74 height:100%;
75}
76/*#slider {
77 width: 80%;
78 max-width: 500px;
79 height: 25vw;
80 max-height: 150px;
81
82 position: relative;
83}*/
84
85#slider .ssp-header-unidade__imagem-box-imagem{
86 opacity: 0;
87 position: absolute;
88 /*width: 100%;
89 height: 100%;*/
90 object-fit: cover;
91 transition: opacity 2000ms;
92}
93
94#slider .ssp-header-unidade__imagem-box-imagem.selected {
95 opacity: 1;
96}
97
98#slider .ssp-header-unidade__imagem-box-imagem img{
99 position: absolute;
100 width: 100%;
101 height: 100%;
102 object-fit: cover;
103}
104
105@media only screen and (max-width: 1024px) {
106
107#slider .ssp-header-unidade__imagem-box-imagem{
108 margin-top: -240px;
109 height: 248px;
110
111 }
112 .ssp-header-unidade__container-info {
113 margin-top: 240px!important;
114 }
115
116}
117
118 @media only screen and (max-width: 768px){
119
120 .ssp:not(.liferay-instance) .ssp-header-unidade__imagem-box-imagem{
121 height:228px;
122 }
123 .ssp-header-title-bloco {
124 font-size: 14px;
125}
126
127 .creditoFotoMob{
128 font-size: 9px!important;
129 max-width: 161px!important;
130 max-height: 30px!important;
131 padding: 8.5px 9.5px!important;
132 line-height: 0.6em!important;
133
134 }
135}
136
137/* Transporte próximo */
138
139.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento {
140 display:block;
141 padding-top: 5px;
142}
143
144.ssp:not(.liferay-instance) .ssp-header-unidade__endereco-container {
145 display: flex;
146 align-items: center;
147 justify-content: space-between;
148 flex-flow: column;
149 align-items: flex-start;
150 gap: 15px;
151}
152
153.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento a{
154 color:white;
155}
156
157.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento a:hover{
158 font-weight:normal!important;
159}
160
161.ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento p{
162 display:inline-block;
163 margin: 0;
164}
165
166.ssp:not(.liferay-instance) .ssp-header-unidade__endereco {
167 max-width: 100%;
168}
169
170@media only screen and (max-width: 768px){
171
172 .ssp:not(.liferay-instance) .ssp-header-unidade__container-info .container {
173 padding: 0;
174 }
175
176 .ssp:not(.liferay-instance) .ssp-header-unidade__estacionamento p{
177 display:inline;
178 font-size: 13px;
179 }
180}
181
182
183</style>
184
185<#assign prefix = "ssp" />
186<#assign defaultImage = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTuyJZ_Ky8o9kn0wiBy4mp5-3sb7xei_WudTL_3Jo6yvWmzQHuK&s" />
187
188<section style="position:relative;">
189<#-- Dinâmico -->
190 <div class="ssp-header-unidade__imagem-box">
191 <#-- Inicia o Looping -->
192
193 <#list entries![] as entry>
194
195 <#assign renderer = entry.getAssetRenderer() />
196 <#assign document = saxReaderUtil.read(renderer.getArticle().getContent()) />
197 <#assign rootElement = document.getRootElement() />
198 <#assign journalArticle = renderer.getArticle() />
199
200 <#-- Get fields -->
201
202 <#-- Nome da unidade -->
203 <#assign xPathSelector_nome = saxReaderUtil.createXPath("dynamic-element[@field-reference='nomeUsualUnidade']")>
204 <#assign nomeUnidade = xPathSelector_nome.selectSingleNode(rootElement).getStringValue()>
205
206 <#assign xPathSelector_codigoUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='codigoUnidade']")>
207 <#assign codigoUnidade = xPathSelector_codigoUnidade.selectSingleNode(rootElement).getStringValue()?trim>
208
209 <#if nomeUnidade?? >
210 <#assign nome = nomeUnidade >
211 <#else>
212 <#assign nome = "" >
213 </#if>
214
215 <#-- Endereço 1 -->
216
217 <#-- Rua -->
218 <#assign xPathSelector_enderecoUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='enderecoUnidade']")>
219 <#assign enderecoUnidade = xPathSelector_enderecoUnidade.selectSingleNode(rootElement).getStringValue()?trim>
220
221 <#if enderecoUnidade?? >
222 <#assign endereco = enderecoUnidade >
223 <#else>
224 <#assign endereco = "" >
225 </#if>
226
227 <#-- número -->
228 <#assign xPathSelector_numEnderecoUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='numEnderecoUnidade']")>
229 <#assign numeroUnidade = xPathSelector_numEnderecoUnidade.selectSingleNode(rootElement).getStringValue()?trim>
230
231 <#if numeroUnidade?? >
232 <#assign numero = numeroUnidade >
233 <#else>
234 <#assign numero = "" >
235 </#if>
236
237 <#-- Bairro -->
238 <#assign xPathSelector_bairroUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='bairroUnidade']")>
239 <#assign bairroUnidade = xPathSelector_bairroUnidade.selectSingleNode(rootElement).getStringValue()?trim>
240
241 <#if bairroUnidade?? >
242 <#assign bairro = bairroUnidade >
243 <#else>
244 <#assign bairro = "" >
245 </#if>
246
247 <#-- Cidade -->
248 <#assign xPathSelector_cidadeUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='cidadeUnidade']")>
249 <#assign cidadeUnidade = xPathSelector_cidadeUnidade.selectSingleNode(rootElement).getStringValue()?trim>
250
251 <#if cidadeUnidade?? >
252 <#assign cidade = cidadeUnidade >
253 <#else>
254 <#assign cidade = "" >
255 </#if>
256
257 <#-- Cep -->
258 <#assign xPathSelector_cepUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='cepUnidade']")>
259 <#assign cepUnidade = xPathSelector_cepUnidade.selectSingleNode(rootElement).getStringValue()?trim>
260
261 <#if cepUnidade?? >
262 <#assign cep = cepUnidade >
263 <#else>
264 <#assign cep = "" >
265 </#if>
266
267 <#-- Fim endereço 1 -->
268
269 <#-- Endereço 2 -->
270
271 <#-- Rua -->
272 <#assign xPathSelector_enderecoUnidade2 = saxReaderUtil.createXPath("dynamic-element[@field-reference='enderecoUnidade2']")>
273 <#assign enderecoUnidade2 = xPathSelector_enderecoUnidade2.selectSingleNode(rootElement).getStringValue()?trim>
274
275 <#if enderecoUnidade2?? >
276 <#assign endereco2 = enderecoUnidade2 >
277 <#else>
278 <#assign endereco2 = "" >
279 </#if>
280
281 <#-- número -->
282 <#assign xPathSelector_numeroUnidade2 = saxReaderUtil.createXPath("dynamic-element[@field-reference='numeroUnidade2']")>
283 <#assign numeroUnidade2 = xPathSelector_numeroUnidade2.selectSingleNode(rootElement).getStringValue()?trim>
284
285 <#if numeroUnidade2?? >
286 <#assign numero2 = numeroUnidade2 >
287 <#else>
288 <#assign numero2 = "" >
289 </#if>
290
291 <#-- Bairro -->
292 <#assign xPathSelector_bairroUnidade2 = saxReaderUtil.createXPath("dynamic-element[@field-reference='bairroUnidade2']")>
293 <#assign bairroUnidade2 = xPathSelector_bairroUnidade2.selectSingleNode(rootElement).getStringValue()?trim>
294
295 <#if bairroUnidade2?? >
296 <#assign bairro2 = bairroUnidade2 >
297 <#else>
298 <#assign bairro2 = "" >
299 </#if>
300
301 <#-- Cidade -->
302 <#assign xPathSelector_cidadeUnidade2 = saxReaderUtil.createXPath("dynamic-element[@field-reference='cidadeUnidade2']")>
303 <#assign cidadeUnidade2 = xPathSelector_cidadeUnidade2.selectSingleNode(rootElement).getStringValue()?trim>
304
305 <#if cidadeUnidade2?? >
306 <#assign cidade2 = cidadeUnidade2 >
307 <#else>
308 <#assign cidade2 = "" >
309 </#if>
310
311 <#-- Cep -->
312 <#assign xPathSelector_cepUnidade2 = saxReaderUtil.createXPath("dynamic-element[@field-reference='cepUnidade2']")>
313 <#assign cepUnidade2 = xPathSelector_cepUnidade2.selectSingleNode(rootElement).getStringValue()?trim>
314
315 <#if cepUnidade2?? >
316 <#assign cep2 = cepUnidade2 >
317 <#else>
318 <#assign cep2 = "" >
319 </#if>
320
321 <#-- Fim endereço 2 -->
322
323
324
325 <#-- Horário -->
326 <#assign xPathSelector_horarioUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='horarioUnidade']")>
327 <#assign horarioUnidade = xPathSelector_horarioUnidade.selectSingleNode(rootElement).getStringValue()?trim>
328
329 <#if horarioUnidade?? >
330 <#assign horario = horarioUnidade >
331 <#else>
332 <#assign horario = "" >
333 </#if>
334
335 <#-- DDD -->
336 <#assign xPathSelector_dddUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='dddTelefoneUnidade']")>
337 <#assign dddUnidade = xPathSelector_dddUnidade.selectSingleNode(rootElement).getStringValue()?trim>
338
339 <#if dddUnidade?? >
340 <#assign ddd = dddUnidade >
341 <#else>
342 <#assign ddd = "" >
343 </#if>
344
345 <#-- telefone -->
346 <#assign xPathSelector_telefoneUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='telefoneUnidade']")>
347 <#assign telefoneUnidade = xPathSelector_telefoneUnidade.selectSingleNode(rootElement).getStringValue()?trim>
348
349 <#if telefoneUnidade?? >
350 <#assign telefone = telefoneUnidade >
351 <#else>
352 <#assign telefone = "" >
353 </#if>
354
355 <#-- UF -->
356 <#assign xPathSelector_ufUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='ufUnidade']")>
357 <#assign ufUnidade = xPathSelector_ufUnidade.selectSingleNode(rootElement).getStringValue()?trim>
358
359 <#if ufUnidade?? >
360 <#assign UF = ufUnidade >
361 <#else>
362 <#assign UF = "" >
363 </#if>
364
365 <#-- Estacionamento -->
366 <#assign xPathSelector_estacionamento = saxReaderUtil.createXPath("dynamic-element[@field-reference='estacionamentoUnidade']")>
367 <#assign estacionamentoUnidade = xPathSelector_estacionamento.selectSingleNode(rootElement).getStringValue()>
368
369 <#if estacionamentoUnidade?? >
370 <#assign estacionamento = estacionamentoUnidade >
371 <#else>
372 <#assign estacionamento = "" >
373 </#if>
374
375 <#-- Estacionamento Unidade 2 -->
376 <#assign xPathSelector_estacionamento2 = saxReaderUtil.createXPath("dynamic-element[@field-reference='estacionamentoUnidade2']")>
377 <#assign estacionamentoUnidade2 = xPathSelector_estacionamento2.selectSingleNode(rootElement).getStringValue()>
378
379 <#if estacionamentoUnidade2?? >
380 <#assign estacionamento2 = estacionamentoUnidade2 >
381 <#else>
382 <#assign estacionamento2 = "" >
383 </#if>
384
385 <#-- Facebook -->
386 <#assign xPathSelector_facebookUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='facebookUnidade']")>
387 <#assign facebookUnidade = xPathSelector_facebookUnidade.selectSingleNode(rootElement).getStringValue()>
388
389 <#if facebookUnidade?? >
390 <#assign facebook = facebookUnidade >
391 <#else>
392 <#assign facebook = "" >
393 </#if>
394
395 <#-- Instagram -->
396 <#assign xPathSelector_instagramUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='instagramUnidade']")>
397 <#assign instagramUnidade = xPathSelector_instagramUnidade.selectSingleNode(rootElement).getStringValue()>
398
399 <#if instagramUnidade?? >
400 <#assign instagram = instagramUnidade >
401 <#else>
402 <#assign instagram = "" >
403 </#if>
404
405 <#-- Maps -->
406 <#assign xPathSelector_googlemapsUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='googlemapsUnidade']")>
407 <#assign googlemapsUnidade = xPathSelector_googlemapsUnidade.selectSingleNode(rootElement).getStringValue()?trim>
408
409 <#if googlemapsUnidade?? >
410 <#assign googlemaps = googlemapsUnidade >
411 <#else>
412 <#assign googlemaps = "" >
413 </#if>
414
415 <#assign hasMaps = (googlemaps?trim?length > 0) >
416
417
418
419 <#-- Waze -->
420 <#assign xPathSelector_wazeUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='wazeUnidade']")>
421 <#assign wazeUnidade = xPathSelector_wazeUnidade.selectSingleNode(rootElement).getStringValue()>
422
423 <#if wazeUnidade?? >
424 <#assign waze = wazeUnidade >
425 <#else>
426 <#assign waze = "" >
427 </#if>
428
429
430
431
432 <#-- Imagem -->
433
434 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='imagemUnidade']")>
435
436 <#assign imagemStr = xPathSelector.selectSingleNode(rootElement).getStringValue()>
437 <#assign imagemJson = jsonFactoryUtil.createJSONObject(imagemStr)>
438 <#assign imagemId = getterUtil.getInteger(imagemJson.get('fileEntryId'))>
439
440 <#if imagemId != 0>
441 <#assign
442 dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")
443 dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
444 fileEntry = dl.getFileEntry(imagemId)
445 imagemUrl = dlURLHelper.getImagePreviewURL(fileEntry, themeDisplay)
446 imagemAlt = imagemJson.get('alt')
447 />
448 <#else>
449 <#assign imagemUrl = "">
450 </#if>
451
452 <#-- Imagem 2 -->
453 <#assign xPathSelector2 = saxReaderUtil.createXPath("dynamic-element[@field-reference='imagemUnidade2']")>
454
455 <#assign imagemStr2 = xPathSelector2.selectSingleNode(rootElement).getStringValue()>
456
457 <#if imagemStr2?contains("classPK")>
458 <#assign imagemJson2 = jsonFactoryUtil.createJSONObject(imagemStr2)>
459 <#assign imagemId2 = getterUtil.getInteger(imagemJson2.get('fileEntryId'))>
460
461 <#if imagemId2 != 0>
462 <#assign
463 dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")
464 dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
465 fileEntry = dl.getFileEntry(imagemId2)
466 imagemUrl2 = dlURLHelper.getImagePreviewURL(fileEntry, themeDisplay)
467 imagemAlt2 = imagemJson2.get('alt')
468 />
469 <#else>
470 <#assign imagemUrl2 = "">
471 </#if>
472
473
474 </#if>
475
476 <#-- Crédito Imagem -->
477 <#assign xPathSelector_creditoImagem = saxReaderUtil.createXPath("dynamic-element[@field-reference='creditoImagem']")>
478
479 <#assign creditoImagem = xPathSelector_creditoImagem.selectSingleNode(rootElement).getStringValue()>
480
481 <#assign hasCreditoImagem = (creditoImagem?trim?length > 0) >
482
483
484 <#-- Estação próxima -->
485 <#assign xPathSelector_estacaoProxima = saxReaderUtil.createXPath("dynamic-element[@field-reference='estacaoProxima']")>
486
487 <#assign estacaoProxima = xPathSelector_estacaoProxima.selectSingleNode(rootElement).getStringValue()>
488
489 <#assign hasEstacaoProxima = (estacaoProxima?trim?length > 0) >
490
491 <#-- dados de compartilhamento -->
492 <@liferay_util["html-top"]>
493 <meta name="image" property="og:image" content="${imagemUrl}">
494 <meta property="og:image:width" content="1024">
495 </@>
496 <#-- dados de compartilhamento -->
497 <div class="ssp-header-unidade__imagem-box-box-linha"></div>
498
499 <div class="ssp-header-unidade__imagem-box-box-linha2"></div>
500
501
502 <div id="slider">
503
504 <div class="ssp-header-unidade__imagem-box-imagem selected">
505
506 <img src="${imagemUrl}" loading="lazy" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> >
507
508 <#if endereco2?length == 0>
509 <#if hasCreditoImagem >
510
511 <div class="creditoFotoMob d-none">
512 Foto: ${creditoImagem}
513 </div>
514
515 </#if>
516 </#if>
517
518 </div>
519
520 <#if endereco2?length != 0>
521
522 <div class="ssp-header-unidade__imagem-box-imagem">
523 <img src="${imagemUrl2}" loading="lazy" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> >
524 </div>
525
526 </#if>
527
528
529
530 </div>
531
532
533
534 <div class="ssp-header-unidade__container-info pb-0">
535
536 <div class="container">
537
538 <div class="ssp-header-unidade__content-info" style="height: auto;">
539
540 <div class="ssp-header-unidade__content-info-container">
541
542 <div>
543
544 <div>
545 <small class="ssp-header-unidade__subtitle">Senac</small>
546 </div>
547
548 <div class="ssp-header-unidade__title-container">
549
550 <div>
551 <h1 class="ssp-header-unidade__title">
552
553 ${nome}
554
555 </h1>
556 </div>
557
558 <#-- Apenas para referencia no JS -->
559 <span id="codUnidadeReferencia" class="d-none">${codigoUnidade}</span>
560
561 </div>
562
563 </div>
564
565 <div class="ssp-header-unidade__endereco-container">
566
567 <div class="d-flex flex-wrap">
568
569 <div>
570
571 <#if endereco2?length != 0>
572 <span class="ssp-header-title-bloco">Bloco I</span><br>
573 </#if>
574 <address class="ssp-header-unidade__endereco">
575 ${endereco}, ${numero}<br>
576 ${bairro}, ${cidade} - ${UF}, ${cep}
577 </address>
578
579 <span class="ssp-header-unidade__estacionamento">
580
581 <i class="fas fa-car"></i>
582
583 <#if estacionamento?contains("true")>
584 <strong>Possui estacionamento?</strong> Sim
585 <#else>
586 <strong>Possui estacionamento?</strong> Não
587 </#if>
588
589 </span>
590 </div>
591
592 <#if endereco2?length != 0>
593
594 <div class="pt-5">
595 <span class="ssp-header-title-bloco">Bloco II</span><br>
596 <address class="ssp-header-unidade__endereco">
597 ${endereco2}, ${numero2}<br>
598 ${bairro2}, ${cidade2}, ${cep2}
599 </address>
600 <span class="ssp-header-unidade__estacionamento">
601 <i class="fas fa-car"></i>
602
603 <#if estacionamento2?contains("true")>
604 <strong>Possui estacionamento?</strong> Sim
605 <#else>
606 <strong>Possui estacionamento?</strong> Não
607 </#if>
608
609 </span>
610 </div>
611
612 </#if>
613
614 <#if hasEstacaoProxima>
615
616 <span class="ssp-header-unidade__estacionamento">
617 <i class="fa-solid fa-train-subway" aria-hidden="true"></i>
618 <strong>Estação mais próxima:</strong>
619 ${estacaoProxima}
620 </span>
621
622 </#if>
623
624
625 </div>
626
627 <div class="ssp-header-unidade__content-info-maps">
628
629 <#if hasMaps >
630
631 <a class="btn btn-nivel border-white ssp-header-unidade__btn" href="${googlemaps}" target="_blank">
632 <i class="fas fa-map-marker-alt mr-2 ssp-header-unidade__btn-icon"></i>Google Maps
633 </a>
634
635 <#else>
636
637 <a class="btn btn-nivel border-white ssp-header-unidade__btn d-none" href="${googlemaps}" target="_blank">
638 <i class="fas fa-map-marker-alt mr-2 ssp-header-unidade__btn-icon"></i>Google Maps
639 </a>
640
641
642 </#if>
643
644
645 <a class="btn btn-nivel border-white ml-2 d-sm-inline-block d-md-none d-lg-none d-xl-none ssp-header-unidade__btn" href="${waze}" target="_blank">
646 <i class="fab fa-waze mr-2 ssp-header-unidade__btn-icon"></i>Waze
647 </a>
648
649 </div>
650
651 </div>
652
653
654 </div>
655
656 <div class="ssp-header-unidade__content-info-body">
657
658 <div class="ssp-header-unidade__atendimento-container">
659 <p><strong>Atendimento:</strong></p>
660 <#-- <p>(${ddd}) ${telefone}</p> -->
661 <p>${horario}</p>
662 </div>
663
664 </div>
665
666
667 </div>
668
669 </div>
670
671 </div>
672
673 </#list>
674 </div>
675
676</section>
677
678<script>
679
680 if ( $.trim($('.ssp-header-unidade__title').html()) === 'Santo Amaro'){
681
682 $('.ssp-header-unidade__subtitle').html('Centro Universitário Senac')
683
684 } else if ( $.trim($('.ssp-header-unidade__title').html()) === 'Campos do Jordão'){
685
686 $('.ssp-header-unidade__subtitle').html('Centro Universitário Senac')
687
688 } else if ( $.trim($('.ssp-header-unidade__title').html()) === 'Águas de São Pedro'){
689
690 $('.ssp-header-unidade__subtitle').html('Centro Universitário Senac')
691
692 }
693
694//Animação de Crédito da imagem
695
696$(document).ready(function(){
697
698 let larguraTela = $(window).width();
699
700 if(larguraTela < 1024){
701
702 animateCreditImage()
703
704 $(window).scroll(function() {
705 ScrollPagina()
706 });
707
708 }else{
709
710 $(".ssp-header-unidade__imagem-box-imagem" ).mouseover(function() {
711 $(".creditoFotoMob").removeClass('d-none')
712
713 });
714
715 $(".ssp-header-unidade__imagem-box-imagem" ).mouseout(function() {
716 $(".creditoFotoMob").addClass('d-none')
717
718 });
719
720 }
721
722 //verifica posição do Top
723
724 function ScrollPagina(){
725
726 let scrollPage = $(window).scrollTop();
727
728 if(scrollPage == 0){
729
730 animateCreditImage()
731
732 }
733 }
734
735 function animateCreditImage(){
736
737 $( ".creditoFotoMob" ).removeClass('d-none').fadeIn( 200 ).delay( 2500 ).fadeOut( 5000 );
738
739 }
740
741 //anima Slider fotos unidades de
742
743 let time = 5000,
744 currentImageIndex = 0,
745 images = document
746 .querySelectorAll("#slider .ssp-header-unidade__imagem-box-imagem")
747 max = images.length;
748
749 function nextImage() {
750
751 images[currentImageIndex]
752 .classList.remove("selected")
753
754 currentImageIndex++
755
756 if(currentImageIndex >= max)
757 currentImageIndex = 0
758
759 images[currentImageIndex]
760 .classList.add("selected")
761 }
762
763 function start() {
764
765 let enderecos = document.querySelectorAll('address');
766
767 console.log(enderecos.length);
768
769 if(enderecos.length >= 2){
770
771 setInterval(() => {
772 // troca de image
773 nextImage()
774 }, time)
775 }
776
777 }
778
779 window.addEventListener("load", start)
780
781});
782
783</script>
Conheça nossos cursos
Um erro ocorreu enquanto processava o modelo.
Java method "com.liferay.portlet.asset.model.impl.AssetEntryImpl.getCategories()" threw an exception when invoked on com.liferay.portlet.asset.model.impl.AssetEntryImpl object "{\"mvccVersion\": 26, \"ctCollectionId\": 0, \"entryId\": 201379, \"groupId\": 200052, \"companyId\": 20102, \"userId\": 98263, \"userName\": \"Thiago Augusto da Costa\", \"createDate\": \"Wed Jul 22 16:34:36 GMT 2020\", \"modifiedDate\": \"Mon Jan 05 12:42:37 GMT 2026\", \"classNameId\": 27901, \"classPK\": 201374, \"classUuid\": \"aa94dba4-1b8d-0754-0d52-a8c493dff367\", \"classTypeId\": 37552, \"listable\": true, \"visible\": true, \"startDate\": null, \"endDate\": null, \"publishDate\": \"Wed Jul 22 16:31:00 GMT 2020\", \"expirationDate\": null, \"mimeType\": \"text/html\", \"title\": \"<?xml version='1.0' encoding='UTF-8'?><root available-locales='pt_BR' default-locale='pt_BR'><Title language-id='pt_BR'>Senac Araraquara</Title></root>\", \"description\": \"\", \"summary\": \"\", \"url\": \"\", \"layoutUuid\": \"\", \"height\": 0, \"width\": 0, \"priority\": 0.0}"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #list entry.getCategories()![] as cat... [in template "20102#20129#40325" at line 53, column 13]
----
1<#--
2 Name: Unidades Modalidades
3 Type: Category Navigation Widget Template
4 Path: ROOT/assets/unidade-niveis/widget-templates/unidade-niveis-com-EAD_refresh.ftl
5-->
6<#assign prefix = "ssp" />
7
8<#assign
9 vocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
10 normalizer = serviceLocator.findService("com.liferay.portal.kernel.util.FriendlyURLNormalizer")
11 categoryId = 0
12 vocabularies = vocabularyLocalService.getAssetVocabularies(-1,-1)
13 unidadeFriendlyUrl = getUnidadeFriendlyUrl()
14 />
15
16 <#function getUnidadeFriendlyUrl >
17 <#assign friendly = themeDisplay.getURLCurrent()?split("/")[1]?split("?")?first />
18 <#if friendly?contains("web") >
19 <#assign friendly = themeDisplay.getURLCurrent()?split("/")[2]?split("?")?first>
20 </#if>
21
22 <#return friendly />
23
24 </#function>
25
26<#list entries![] as entry>
27
28 <#assign renderer = entry.getAssetRenderer() />
29 <#assign document = saxReaderUtil.read(renderer.getArticle().getContent()) />
30 <#assign rootElement = document.getRootElement() />
31 <#assign journalArticle = renderer.getArticle() />
32
33 <#list vocabularies as vocabulary >
34 <#if vocabulary.getName() == 'Unidades'>
35
36 <#assign
37 xPathSelector_nomeUsualUnidade = saxReaderUtil.createXPath("dynamic-element[@field-reference='nomeUsualUnidade']")
38 nomeUsual = xPathSelector_nomeUsualUnidade.selectSingleNode(rootElement).getStringValue()
39 categories = vocabulary.getCategories()
40 >
41 <#list categories as category>
42 <#if category.getName()?trim == nomeUsual?trim>
43
44 <#assign categoryId = category.getCategoryId() >
45 </#if>
46 </#list>
47 </#if>
48 </#list>
49
50 <nav class="${prefix}-btns-horizontal-area">
51 <input type="hidden" id="friendlyUnidade" value="${unidadeFriendlyUrl}" >
52
53 <#list entry.getCategories()![] as category>
54
55 <#assign vocabularyName = vocabularyLocalService.getVocabulary(category.getVocabularyId()).getTitle("pt-br")?trim />
56 <#assign normalizedCategoryName = normalizer.normalize(category.getName()) />
57
58 <#if normalizer.normalize(vocabularyName) == "modalidade">
59 <#if normalizedCategoryName == "espec.-tecnica-de-nivel-medio">
60 <a href="/${unidadeFriendlyUrl}/especializacao-tecnica" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-especializacao-tecnica" style="order: 1">Especialização Técnica</a>
61 </#if>
62 </#if>
63
64 <#if normalizer.normalize(vocabularyName) == "tipo-de-curso">
65 <#if normalizedCategoryName == "livre">
66 <a href="/${unidadeFriendlyUrl}/cursos-livres" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
67 ${category.getName()}
68 </a>
69
70 <#elseif normalizedCategoryName == "tecnico">
71 <a href="/${unidadeFriendlyUrl}/cursos-tecnicos" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
72 ${category.getName()}
73 </a>
74
75 <#elseif normalizedCategoryName == "extensao">
76 <a href="/${unidadeFriendlyUrl}/extensao-universitaria" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
77 ${category.getName()}
78 </a>
79
80 <#elseif normalizedCategoryName == "extensao-ead">
81 <a href="https://www.ead.senac.br/extensao-universitaria" target="_blank" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
82 ${category.getName()}
83 </a>
84
85 <#elseif normalizedCategoryName == "graduacao-ead">
86 <a href="https://www.ead.senac.br/graduacao" target="_blank" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
87 ${category.getName()}
88 </a>
89
90 <#elseif normalizedCategoryName == "pos-graduacao-ead">
91 <a href="https://www.ead.senac.br/pos-graduacao" target="_blank" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
92 ${category.getName()}
93 </a>
94 <#elseif normalizedCategoryName == "jovem-aprendiz">
95 <a href="/jovem-aprendiz" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
96 ${category.getName()}
97 </a>
98
99 <#else>
100 <a href="/${unidadeFriendlyUrl}/${normalizedCategoryName}" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">
101 ${category.getName()}
102 </a>
103 </#if>
104
105 </#if>
106
107 <#if normalizer.normalize(vocabularyName) == "tema-mercadologico-">
108 <#if category.getName() == "Idiomas">
109 <a href="/${unidadeFriendlyUrl}/cursos-livres/${normalizedCategoryName}" data-categoryId="${category.getCategoryId()}" class="btn btn-nivel btn-nivel-${normalizedCategoryName}">${category.getName()}</a>
110 </#if>
111 </#if>
112
113 </#list>
114
115 </nav>
116
117 <#break>
118
119
120</#list>